A Virtual Machine (VM) is generally stored in a self contained data file (VM file). For example, a VMware™ virtual machine is stored in a virtual machine disk (VMDK) file. This is a virtual disk file, which stores the content of a virtual machine's hard disk drive. A virtual disk is made up of one or more VMDK files. This VM data file can be used by virtualization systems to launch or run a virtual machine. When executing, a virtual machine can be modified by way of installing new applications, removing applications, amending configurations, etc.
Generally, numerous incremental updates would be applied on top of a base version of a virtual machine. However, the virtual machine file metadata does not maintain these incremental changes. With the growth of virtualization, hundreds or thousands of virtual machine files may be in existence in a typical data center. Since a virtual machine file doesn't provide metadata to indicate what applications are installed and what the update history of the virtual machine is, it is difficult to manage this large volume of virtual machine files. Hence, it is within the context this invention arises.